1. Field of the Invention
The present invention relates to an improved tool for debugging software applications. More particularly, the present invention relates to an improved tracing function for use in debugging software programs.
2. Description of the Related Art
One critical but often overlooked part of the process of developing software programs is the elimination of errors from the software program. The process of eliminating errors is known as debugging. After one or more software developers writes the code for a software program, the program must be tested to determine what errors exist in the program, and then the program must be debugged to reduce or eliminate the errors. For commercial software, it is imperative that most of the errors or bugs are found and debugged prior to the software being released to the marketplace. The debugging process can be quite extensive, costly and time consuming. Accordingly, software tools and techniques have been developed to assist in the debugging of code and reduce the debugging cycle time.
Additionally, for errors or bugs found in commercial software following the release of the commercial software, software manufacturers must be able to respond rapidly to customer complaints about bugs, and provide fixes in short order.
The software errors or bugs can be categorized into two types. The first type is a logic error, in which logic statements or commands included by the software developer in the program are flawed, such that the desired function is not performed during execution of the program, or is not performed properly, etc. Typically, logic errors cause the program to execute functions or commands within the program which are not desired by the developer. The second type of error is with regard to data being maintained or used by the program, and occurs when the data is somehow corrupted.
A number of debugging functions and techniques are presently employed in currently available software used to debug programs. One set of known techniques are known as testpoints, and include the setting of breakpoints, tracepoints, watchpoints, etc. However, the use of tracepoints has been rather limited. While tools exist which set tracepoints so as to trigger creation of trace information upon the execution of a specific logic unit in a program being debugged, no similar mechanism exists for setting tracepoints so as to trigger tracing relative to specific data components within or utilized by a program. The existing logic-based trace function can create information regarding data movement, but only in the context of data movement that occurs upon execution of a logic unit. Further, information is created relative to all data components. When information is being sought relative to a single component, the logic-based tracepoint procedure is costly in terms of processing time, since information relative to all affected data components is gathered, and in terms of developer time, as the developer must sort through information relevant to all affected data components to find information pertaining to the desired one. The ability to trigger the generation of trace data based upon a specific data component so that information can be obtained relative to the data component during execution of logic units would be a valuable tool for developers in the debugging of programs.
U.S. Pat. No. 5,093,914, which issued to Coplien et al., discloses a method for using breakpoints in the debugging of programs written in an object oriented language. This patent is of interest in that it does address using breakpoints (a form of testpoints which causes a program to halt executing when encountered) in the debugging of object oriented programs. However, the Coplien patent does not address tracepoints, and does not address the problem of or provide a solution for the lack of a trace function relative to data components in the debugging of programs.
IBM's Cross System Product (CSP), Version 4.1, which was released in 1992, provides an object oriented solution for the debugging of procedural programs. However, while that solution does provide debugging with testpoints, it does not enable the setting of tracepoints relative to data components in a program.
A need still exists for a debugging tool which permits a developer to gather trace information specific to designated data components for a program undergoing debugging.